This invention relates to the programming of an N-bit memory array, such as an EEPROM array, whose cells are individually programmable by bits exhibiting a predetermined one of two complementary logic states. More particularly, this invention relates to methods and apparatus for assuring that no more than a predetermined number K of the cells of such array are simultaneously programmed to prevent overloading of the array power supply.
One technique of this general type is described in U.S. Pat. No. 5,644,531, issued to Kuo et al. on Jul. 1, 1997. The cells of an N-bit memory array are divided into groups to be programmed, and the groups are switched based in part on the location, as well as the number, of the programming bits to be programmed within an incoming N-bit programming byte. The need to create and switch among bit groups results in inefficient programming.
An improved way of efficiently programming an N-bit memory array while taking into account the power supply-induced limitations mentioned above is afforded by the method and apparatus of the present invention. This technique employs dynamic masking of the array in such a manner that creating cell groups and switching among such are not necessary.
When the number of programming bits in an incoming byte exceeds K, the mask functions to map the bit pattern of the incoming byte into sequential N-bit auxiliary bytes. The first auxiliary byte retains the bit pattern of the incoming byte up to the Kth programming bit, and the remaining bit positions of the first auxiliary byte exhibit a state complementary to the programming bits. The second auxiliary byte retains the bit pattern of the incoming byte starting with the first location after the Kth programming bit and continuing up to the Kth additional programming bit (if any); all remaining bit positions of the second auxiliary byte (including the bit positions that contained programming bits in the first auxiliary byte) exhibit the complementary state. Further auxiliary bytes can be created to accommodate all K programming bits if the first and second auxiliary bytes do not account for all the programming bits in the incoming byte (e.g., where K=3, N=8, and all bits in the incoming byte are programming bits).
The masking arrangement of the invention is adaptable for applications beyond programming memory arrays. In one more generalized embodiment, the mask functions to map successive subsets of data segments into a succession of N-bit auxiliary bytes none of which has more than an individually selectable number of bits exhibiting a predetermined one of two complementary logic states.